n = 30

print('=' * n, '变量赋值')
a = 100
b = 1.12
c = "字符串"
d = '字符串\n22222'

# 变量允许多个赋值
a1 = a2 = a3 = 5
b1, b2, b3 = 1, 2, 3

# python3.0的print函数以接收参数的形式在控制台输出
print(a)
print(b)
print(c)

print('=' * n, '输出函数')

# 打印分隔符
# sep: 指定分隔符
# end: 最后一个元素打印完之后添加
print('=' * 20, '分隔符打印函数')
print(a, b, c, d, sep='-', end='!!\n')

'''
多行注释
'''
"""
还是多行注释
"""

print('=' * n, 'del函数')
# 数字被赋值则会分配一个新的内存对象
var1 = 10
print(var1)
# 可以使用del关键词删除对象的引用
del var1
# print(var1) # 删除之后打印报错: NameError: name 'var1' is not defined

print('=' * n, '数据类型')
# 数据类型
'''
Numbers 数字
    int(有符号整型)
    long(长整型, 也可以代表八进制和十六进制)
        注意：long 类型只存在于 Python2.X 版本中，在 2.2 以后的版本中，
        int 类型数据溢出后会自动转为long类型。
        在 Python3.X 版本中 long 类型被移除，使用 int 替代。
    float(浮点型)
    complex(复数 ????)
String 字符串
    字符串或串(String)是由数字、字母、下划线组成的一串字符。
    python的字串列表有2种取值顺序:
        从左到右索引默认0开始的，最大范围是字符串长度减1
        从右到左索引默认-1开始的，最大范围是字符串开头
List 列表
Tuple 元组
Dictionary 字典
'''

# 字符串下标
var2 = 'RUNOOB'
print(var2[3])  # 输出指定索引的字符
print(var2[2:])  # 截取字符串操作, 指定开始索引
print(var2[1:4])  # 截取字符串操作, 指定开始和结束索引
print(var2[-3:-1])
print(var2[-6:4])
print(var2 * 2)  # 字符串输出两遍
print(var2 + c)  # 字符串连接

print('=' * n, '列表类型')
lists = [5, 'str1', "str2", 'str3', 'str4', 'str5', 'str6', [1, 2]]
print(lists)
print(lists[1:5:3])  # 接收的第三个参数代表步长, 即隔几个取一个
# 列表的操作等同于字符串

print('=' * n, '遍历列表')
for item in lists:
    print(item)

print('=' * n, '元组类型')
var3 = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
print('元组类型操作类似于列表, 不过是只读的')
print(var3[1:5:3])  # 接收的第三个参数代表步长, 即隔几个取一个

print('=' * n, '字典类型')
# 字典的键为不可变类型, 可以是元组, 但不可以是变量或列表, 因为列表可变
var4 = {'key1': 1, 'key2': '字典字符串', 'key3': lists, var3: '字符串'}
print(var4)
print(var4['key2'])
print(var4.keys())
print(var4.values())

print('=' * n, '遍历字典')
for k, v in var4.items():
    print(k, v)

# python末尾必须以空行结尾
